Angular Diameter Distance test using BAO as Standard Ruler using $D_A$ data

Basics of angular diameter distance are explained using plots and standard distance values


In [2]:
import numpy as np
import scipy as sp
from scipy import integrate
import math
import matplotlib.pyplot as plt
from astropy.io import ascii

Observational data of Baryon Accoustic Oscillations consists of a length scale, angular diameter distance ($D_A$) that can be used as a standard ruler. However, due to the galaxy surveys providing more data centered around a particular redshift, we can do correlation function analysis better with high number of galaxies i.e. at a particular redshift. For e.g. with every new data release SDSS publishes galaxy calatalogue along with the estimated parameters, power spectrum and correlation function using a fiducial model of cosmlogy (Generally taken as $\Omega_M=0$, $\Omega_{\Lambda}=0.7$ and $h=0.7$). Therefore, we collect data from different references to put together evolution of angular diameter distance standard ruler.

We quote values in the following list from different references

arXiv:1209.0210 $D_A(0.35)=1036\pm 79Mpc$

Chuang MNRAS 226.36 $D_A(0.35)=1048^{+60}_{-58}$

arXiv:1206.6732 $D_A(0.35)=1050\pm 38Mpc$ and $H(0.35)=84.4\pm 7km/s/Mpc$

arXiv:1201:2172 $D_A(0.57)=1411\pm 65Mpc$

arXiv:1303.4666 $D_A(0.57)=1408\pm 45Mpc$ and $H(0.57)=92.9\pm 7.8km/s/Mpc$

arXiv:1303.4391 $D_A(0.57)=1386\pm 45Mpc$ and $H(0.57)=90.8\pm 6.2km/s/Mpc$

arXiv:1404.1801 $D_A(2.34)=1662\pm 96Mpc$ and $H(2.34)=222\pm 7km/s/Mpc$

We now plot graph using these data points comparing with standard cosmology models and linear coasting.


In [3]:
z=np.array([0.35,0.35,0.35,0.54,0.57,0.57,2.34])
zerr=np.zeros(7)
DA=np.array([1036,1048,1050,1411,1408,1386,1662])
DAerr = np.array([79,60,38,65,45,45,96])

In [4]:
plt.figure()
plt.errorbar(z,DA,DAerr,fmt='ro')
#plt.plot(z,DA,'bo')
plt.title("DA vs. z")


Out[4]:
<matplotlib.text.Text at 0x7fae16a83b50>

Define angular diameter distances for Flat LambdaCDM cosmology with $\Omega_M=0.3$ and $\Omega_{\Lambda}=0.7$ starting with definition of $E(z)=\sqrt{0.3(1+z)^3+0.7}$. As we know Angular diameter distance ($D_A$) is comoving distance ($D_C$) divided by $1+z$. We write $D_A=\frac{D_C}{1+z}=\frac{1}{1+z}\int_0^z\frac{dz}{E(z)}$


In [5]:
Ez = lambda x: 1/math.sqrt(0.3*(1+x)**3+0.7)

np.vectorize(Ez)
#Calculate comoving distance of a data point using the Redshift - This definition is based on the cosmology model we take. Here the distance for E-dS universe is considered. Also note that c/H0 ratio is cancelled in the equations and hence not taken.

def DC_LCDM(z):
  return integrate.quad(Ez, 0, z)

In [6]:
zt = np.arange(0, np.round(z.max())+1, 0.1)
n = len(zt)
terr=np.zeros(n)
print n
print zt
print terr


30
[ 0.   0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9  1.   1.1  1.2  1.3  1.4
  1.5  1.6  1.7  1.8  1.9  2.   2.1  2.2  2.3  2.4  2.5  2.6  2.7  2.8  2.9]
[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]

In [7]:
DC_LCDM=np.vectorize(DC_LCDM)

In [8]:
DALCDM=DC_LCDM(zt)[0]/(1+zt)

In [9]:
DALCDM


Out[9]:
array([ 0.        ,  0.08882452,  0.15891724,  0.21452734,  0.25877005,
        0.29398956,  0.32198513,  0.34415862,  0.36161479,  0.37523198,
        0.38571353,  0.39362601,  0.39942814,  0.40349302,  0.40612541,
        0.40757517,  0.40804789,  0.40771333,  0.40671208,  0.4051609 ,
        0.40315707,  0.40078179,  0.39810303,  0.39517777,  0.39205392,
        0.38877174,  0.3853652 ,  0.3818629 ,  0.37828903,  0.37466398])

Since we are using $D_{H_0}$ as length units, we need to scale the length down to $D_{H_0}=3000h^{-1}Mpc\approx 4285.714 Mpc$


In [10]:
DALCDM=DALCDM*4285.714
print DALCDM


[    0.           380.67649975   681.07382525   919.4028106   1109.01443191
  1259.95515873  1379.93616315  1474.96542465  1549.77756357  1608.13694255
  1653.05788928  1686.96851125  1711.83476272  1729.25569715  1740.53736325
  1746.75060384  1748.77656648  1747.34274209  1743.05164622  1736.4037498
  1727.81589091  1717.63611873  1706.1557078   1693.61891923  1680.23096042
  1666.16449897  1651.56501216  1636.55519455  1621.23860183  1605.70267232]

Angular Diameter distance for open empty universe (Milne universe) is $D_A=\frac{z(z/2+1)}{(z+1)^2}$


In [11]:
def DA_Milne(z):
    return z*(z/2+1)/(z+1)**2

In [12]:
DA_Milne=np.vectorize(DA_Milne)

In [13]:
DAMilne=DA_Milne(zt)
print DAMilne
DAMilne=DAMilne*4285.714
print DAMilne


[ 0.          0.08677686  0.15277778  0.20414201  0.24489796  0.27777778
  0.3046875   0.32698962  0.34567901  0.36149584  0.375       0.38662132
  0.39669421  0.40548204  0.41319444  0.42        0.4260355   0.43141289
  0.43622449  0.44054697  0.44444444  0.44797086  0.45117188  0.45408632
  0.4567474   0.45918367  0.46141975  0.46347699  0.46537396  0.46712689]
[    0.           371.90080165   654.76186111   874.89427811  1049.56261224
  1190.47611111  1305.80348437  1401.38398962  1481.48138272  1549.26780332
  1607.14275     1656.94838322  1700.11795041  1737.78006238  1770.83321528
  1799.99988     1825.86631953  1848.91228121  1869.53340306  1888.05830797
  1904.76177778  1919.87500208  1933.59362109  1946.08408907  1957.4887474
  1967.92989796  1977.51309568  1986.32982688  1994.45970083  2001.97225312]

Flat linear power law will have $D_A=\frac{1}{1+z}\ln(1+z)$ Hence


In [14]:
def DA_LC(z):
    return 1/(z+1)*np.log(1+z)
DA_LC=np.vectorize(DA_LC)
DALC=DA_LC(zt)
print DALC
DALC=DALC*4285.714
print DALC


[ 0.          0.08664562  0.15193463  0.20181866  0.24033731  0.27031007
  0.29375227  0.31213427  0.32654815  0.33781783  0.34657359  0.3533035
  0.35838971  0.3621344   0.36477864  0.36651629  0.3675044   0.36787103
  0.36772122  0.36714163  0.3662041   0.36496842  0.36348463  0.36179469
  0.35993395  0.35793228  0.35581496  0.35360346  0.35131607  0.34896835]
[    0.           371.33833812   651.14837371   864.93707794  1030.01698221
  1158.47166022  1258.93820869  1337.71819081  1399.49196599  1447.79062417
  1485.31528789  1514.15774544  1535.95579442  1552.00447343  1563.33692677
  1570.78400707  1575.01876043  1576.59001078  1575.94798246  1573.46403844
  1569.44602204  1564.15028027  1557.79115928  1550.54855698  1542.57397063
  1533.99536936  1524.92114294  1515.44331941  1505.64020045  1495.57853011]

Angular Diameter distance for Einstein DeSitter universe) is $D_A=\frac{2}{z+1}[1-\frac{1}{\sqrt{z+1}}$]


In [15]:
def DA_EdS(z):
  return 2*(1-1/np.sqrt(1+z))/(z+1)

In [16]:
DA_EdS=np.vectorize(DA_EdS)

In [17]:
DAEdS=DA_EdS(zt)
print DAEdS
DAEdS=DAEdS*4285.714
print DAEdS


[ 0.          0.08461347  0.14521512  0.18914151  0.22120821  0.24467123
  0.26178823  0.27415884  0.28293779  0.28897237  0.29289322  0.29517566
  0.29618194  0.29619089  0.29541898  0.29403557  0.2921741   0.28994028
  0.28741835  0.28467571  0.28176649  0.2787343   0.27561438  0.27243522
  0.26921991  0.26598715  0.26275207  0.25952689  0.25632149  0.25314375]
[    0.           362.62915053   622.3504644    810.60641207   948.03511193
  1048.59089622  1121.94948748  1174.96636446  1212.59043107  1238.45292446
  1255.25656837  1265.03844896  1269.35110058  1269.38945551  1266.08125714
  1260.15237759  1252.1746211   1242.60112525  1231.79286278  1220.03867872
  1207.57057895  1194.57549387  1181.20440061  1167.57944797  1153.79955868
  1139.94486158  1126.08021851  1112.25804575  1098.52058231  1084.90172209]

In [24]:
#
plt.plot(zt,DAEdS,'r',label='E-dS')
#plt.plot(z,DA,'bo')
plt.plot(0.35,995.922790748,'bo')
plt.plot(0.57,1331.15562554,'bo')
plt.plot(2.34,1920.28272912,'bo')
plt.plot(1.0,1607.15989286,'bo')
plt.plot(1.5,1800.00111966,'bo')
plt.plot(zt,DAMilne,'g',label='Milne')
plt.plot(zt,DALCDM,'b',label='LCDM')
plt.plot(zt,DALC,'c',label='LC')
plt.errorbar(z,DA,DAerr,fmt='ro')
plt.title("DA vs. z")
plt.legend(frameon=0, loc='lower right')
#plt.title("DA vs. z")
plt.show()



In [18]: